package org.dromara.system.domain.protocol;

import lombok.Data;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * udp协议解析
 */

@Data
public class ProtocolParsing {

    private String identifier; // 标识符
    private Timestamp timestamp; // 时间戳
    private String controlCommand; // 控制命令
    private int extensionType; // 分机类型
    private String extensionNumber; // 分机编号
    private String extensionName; // 分机名称
    private String extensionPileNumber; // 分机桩号
    private String messageData; // 报文数据
    private String messageTail; // 报文尾


    public static ProtocolParsing parseData(String data) {
        String[] parts = data.split(",");
        if (parts.length != 9) {
            throw new IllegalArgumentException("Invalid data format: " + data);
        }

        ProtocolParsing entity = new ProtocolParsing();

        // 标识符
        entity.setIdentifier(parts[0]);

        // 时间戳
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(parts[1], formatter);
        entity.setTimestamp(Timestamp.valueOf(dateTime));

        // 控制命令
        entity.setControlCommand(parts[2]);

        // 分机类型
        entity.setExtensionType(Integer.parseInt(parts[3]));

        // 分机编号
        entity.setExtensionNumber(parts[4]);

        // 分机名称
        entity.setExtensionName(parts[5]);

        // 分机桩号
        entity.setExtensionPileNumber(parts[6]);

        // 报文数据
        entity.setMessageData(parts[7]);

        // 报文尾
        entity.setMessageTail(parts[8]);

        return entity;

    }
}
